/**
 * 饿汉式
 * 1. 类加载时就初始化，浪费内存，不能延迟加载；
 * 2. 基于 classloader 机制避免了多线程的同步问题，线程安全；
 * 3. 没有加锁，调用效率高。
 *
 * @author susj
 * @date 2022年10月26日 15:25
 */

public class HungrySingleton {

    // 直接初始化好对象
    private static final HungrySingleton hundredSingleton = new HungrySingleton();

    // 构造器私有化
    private HungrySingleton() {
    }

    // 公有获取构造器的方法
    public static HungrySingleton getInstance() {
        return hundredSingleton;
    }

    public static void main(String[] args) {
        HungrySingleton instance1 = getInstance();
        HungrySingleton instance2 = getInstance();
        System.out.println(instance1 == instance2);


        for (int i = 0; i < 100; i++) {
            new Thread(() ->
                    System.out.println(HungrySingleton.getInstance().hashCode())
            ).start();
        }

    }


}
